const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const chalk = require('chalk');

try {
  require('chalk');
} catch {
  execSync('npm install chalk --save-dev', { stdio: 'inherit' });
}

console.log(chalk.blue('🚀 开始项目设置...\n'));

// 安装依赖
console.log(chalk.yellow('📦 安装项目依赖...'));
try {
  execSync('npm install', { stdio: 'inherit' });
  console.log(chalk.green('✓ 依赖安装完成'));
} catch (error) {
  console.error(chalk.red('✗ 依赖安装失败'), error);
  process.exit(1);
}

// 创建必要的目录
console.log(chalk.yellow('\n📁 创建项目目录...'));
try {
  execSync('npm run init', { stdio: 'inherit' });
  console.log(chalk.green('✓ 目录创建完成'));
} catch (error) {
  console.error(chalk.red('✗ 目录创建失败'), error);
  process.exit(1);
}

// 复制环境配置文件
console.log(chalk.yellow('\n🔧 配置环境变量...'));
const envExample = path.join(__dirname, '..', '.env.example');
const envFile = path.join(__dirname, '..', '.env');

if (!fs.existsSync(envFile)) {
  try {
    fs.copyFileSync(envExample, envFile);
    console.log(chalk.green('✓ 环境配置文件创建成功'));
    console.log(chalk.blue('ℹ️ 请修改 .env 文件中的配置'));
  } catch (error) {
    console.error(chalk.red('✗ 环境配置文件创建失败'), error);
    process.exit(1);
  }
} else {
  console.log(chalk.blue('ℹ️ .env 文件已存在，跳过创建'));
}

// 验证项目设置
console.log(chalk.yellow('\n🔍 验证项目设置...'));
try {
  execSync('npm run verify', { stdio: 'inherit' });
  console.log(chalk.green('✓ 项目设置验证完成'));
} catch (error) {
  console.error(chalk.red('✗ 项目设置验证失败，请检查配置'));
  process.exit(1);
}

console.log(chalk.blue('\n✨ 项目设置完成！'));
console.log(chalk.yellow('\n接下来你需要：'));
console.log('1. 检查并修改 .env 文件中的配置');
console.log('2. 运行 npm run dev 启动开发服务器');
console.log('3. 访问 http://localhost:3000 测试服务是否正常\n');
